// 1、引入axios模块
import axios from "axios";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getUserTempId } from "@/utils/getUserTempId";

// 2、二次封装 axios 实例
const ajax = axios.create({
  //baseURL: "http://sph-h5-api.atguigu.cn/api",
  baseURL: "/api",
  timeout: 1000,
});

// 3、添加请求拦截器
ajax.interceptors.request.use(
  (request) => {
    // 在发送请求之前做些什么
    NProgress.start();

    // 统一添加请求头
    request.headers.userTempId = getUserTempId();
    // 在请求头中设置token
    const token = localStorage.getItem("token");
    request.headers.token = token;

    return request;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 4、添加响应拦截器
ajax.interceptors.response.use(
  (response) => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    NProgress.done();
    return response.data;
  },
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    NProgress.done();
    // return Promise.reject(error.message);
    return Promise.reject(new Error(error.message));
  }
);

// 5、默认导出 ajax
export default ajax;
